\section{Internet Explorer}
\label{sec:Internet_Explorer}
Um das Erweiterungskonzept des Internet Explorers anwenden zu können, ist es wichtig die Architektur des Internet Explorers zu verstehen. Die nachfolgenden Abschnitte bieten eine grobe Übersicht über die Architektur des Internet Explorers und eine Zusammenfassung der wichtigsten Methoden zur Erweiterung der Browser"=Funktionalität.

\subsection{Architektur}
\label{subsec:IE_Architektur}
\autoref{fig:ie_archtecture} veranschaulicht die komponentenorientierte Architektur des Internet Explorers, die auf dem \gls{com} basiert. Er besteht aus mehreren Hauptkomponenten, die in separate \glspl{dll} strukturiert sind und eine \acrshort{com}"=Schnittstelle zur Verfügung stellen. Die ausführbare Datei \verb|iexplorer.exe| implementiert diese Schnittstellen.

\begin{figure}[H]
   \centering
   \includegraphics[width=0.6\textwidth]{images/ie_architecture}
   \caption[Internet Explorer \acrshort{com}"=Architektur]{High-Level Übersicht über die Hauptkomponenten des Internet Explorers (angelehnt an 	\cite[]{microsoft2011_ie_architecture})}
   \label{fig:ie_archtecture}
\end{figure}

\begin{itemize}
  \item{\verb|iexplorer.exe| ist eine kompakte Applikation, die beim Laden des Internet Explorers instantiiert wird. Sie ist eine ausführbare Applikation, die andere Hauptkomponenten implementiert.}
  \item{\verb|BrowseUI.dll| stellt die Benutzeroberfläche des Browsers bereit. Oft auch als ">Chrome"< bezeichnet, der die Adressleiste, Statusleiste und sämtliche Menüs enthält.}
  \item{\verb|ShDocVw.dll| bietet Navigation, lokales Caching und History Fuktionalitäten an und ist das eigentliche Webbrowser-Steuerelement des Browsers. Diese \glspl{dll} bietet eine ActiveX-Schnittstelle an über die das Webbrowser-Steuerelement mit Hilfe von Frameworks in einer Windows-Anwendung genutzt werden kann.}
  \item{\verb|MSHTML.dll| bildet die Kern"=Komponente des Internet Explorers und beinhaltet die \gls{layout_engine} ">Trident"<, die für das Parsing und Rendering von \acrshort{html} und \acrshort{css} verantwortlich ist. Seit \acrshort{ie} 9.0 beinhaltet Sie auch die hardwarebeschleunigte \gls{javascript_engine} ">Chakra"< und unterstützt unter anderem die Standards \acrshort{svg} (\acrlong{svg}), \acrshort{html}5 und \acrshort{css}3. Bei älteren Internet Explorer Versionen befand sich die \gls{javascript_engine} in einer eigenen \acrshort{com}"=Komponente, was sich performancetechnisch negative auf die Kommunikation zwischen Browser und Skripte erwiesen hatte.}
  \item{\verb|URLMon.dll| ist für das \acrshort{mime}"=Typen Handling (\acrlong{mime}) und das Herunterladen von Webseiten"=Inhalten verantwortlich. Zudem bildet es einen thread"=sicheren Wrapper um die \verb|WinInet.dll| Komponente und andere Protokoll"=Implementationen herum.}
  \item{\verb|WinInet.dll| bildet den Protokoll-Handler und implementiert die Protokolle \acrshort{http} (\acrlong{http}), \acrshort{https} (\acrlong{https}) und \acrshort{ftp} (\acrlong{ftp}). Zudem ist es für das Caching verantwortlich.}
\end{itemize}

\subsection{Erweiterungsmöglichkeiten}
\label{subsec:IE_Erweiterungsmoeglichkeiten}

Aufgrund der komponentenorientierten Architektur des Internet Explorers, gibt es unterschiedliche Möglichkeiten die Funktionalität des Browsers zu erweitern. Diese lassen sich in drei Kategorien unterteilen \cite[]{microsoft2011_ie_architecture}:

\begin{itemize}
  \item{\textbf{\textit{Browser Extensions:}} Bieten zusätzliche Funkionen in Form von Kontextmenü Erweiterungen, speziellen Symbolleisten oder \glspl{bho} an.}
  \item{\textbf{\textit{Content Extensions:}} Erweitern die Darstellungsart von spezifischen \acrshort{mime}"=Inhaltstypen. Durch Content Extensions können z.B. Word"=, Excel"=, \acrshort{pdf}"= (\acrlong{pdf}) oder \acrshort{xml}"=Dokumente (\acrlong{xml}) direkt im Internet Explorer angezeigt werden.}
  \item{\textbf{\textit{Hosting und Wiederverwendung:}} Unterstützen das Einbinden der ">Trident"< \gls{layout_engine}  als \acrshort{html} und \acrshort{css} \gls{parser} oder Renderer in einer Windows"=Anwendungen.}
\end{itemize}

Nachfolgend werden nur die Möglichkeiten und Funktionsweise der Browser Extensions genauer erläutert, da die andern beiden Kategorien keine Relevanz für diese Bachelorthesis haben werden.

\subsection{Browser Extensions}
\label{subsec:IE_Browser_Extensions}

Diese Möglichkeit der Erweiterbarkeit des Internet Explorers beeinflusst hauptsächlich die Benutzerschnittstelle des Browsers. Sie beinhaltet Add-on Funktionalitäten die durch den User installiert werden müssen und die ">\gls{browsing_experience}"< verbessern sollen.

\begin{itemize}
  \item{\textbf{\textit{Kontextmenü Erweiterungen:}} Durch Kontextmenü Erweiterungen können zusätzliche Optionen und Funktionen einem Kontextmenü hinzugefügt werden. Dies erfolgt über einen Registrierungsschlüssel, der z.B. mit einer JavaScript"=Datei verlinkt ist. Wird der Kontextmenü"=Punkt ausgewählt führt der Internet Explorer das verlinkte Skript aus.}
  \item{\textbf{\textit{Symbolleisten:}} Der Internet Explorer kann durch benutzerdefinierte Symbolleisten erweitert werden. Ein Beispiel für eine benutzerdefinierte Symbolleiste ist die ">BingBar"<\footnote{\vgl{\url{http://toolbar.discoverbing.com/toolbar/de-DE.html}}} von Microsoft.}
  \item{\textbf{\textit{Explorer-Leisten:}} Explorer-Leisten reservieren einen Teilbereich des Browserfenster um benutzerdefinierten Inhalt darzustellen. Zu den Standard Explorer"=Leisten des Internet Explorers gehören z.B. Favoriten, Verlauf und Feeds.}
  \item{\textbf{\textit{\glspl{_bho}:}} Ein \acrshort{bho} ist eine registrierte \acrshort{com}"=Komponente, die direkt vom Internet Explorer ausgeführt wird. Vielfach besitzen \acrshortpl{bho} über keine eigene Benutzerschnittstelle. \acrshortpl{bho} haben über eine Schnittstelle vollen Zugriff auf den \acrshort{dom}-Baum (\acrlong{dom}) einer Webseite und können diesen beliebig manipulieren.}
\end{itemize}

\subsection{Vor- und Nachteile}
\label{subsec:IE_Vor-und_Nachteile}

Durch die komponentenorientierte Architektur ist das Erweiterungskonzept des Internet Explorers sehr flexibel. Sämtliche \acrshort{com}"=Komponenten des Internet Explorers stellen anderen Komponenten und Hostanwendungen eine Schnittstelle ihrer Funktionalität zur Verfügung. Somit können Browsererweiterungen sowohl in Unmanaged- oder in Managed-Code entwickelt werden. Dank der \gls{com_interop} Technologie des .NET Frameworks lassen sich Erweiterungen z.B. in der Programmiersprache C\# entwickeln.
Diese Flexibilität hat auch Nachteile. Zum einen ist der Initialaufwand für die Entwicklung einer Erweiterung viel höher als bei anderen Browsern, da man das Konzept und die Architektur des Internet Explorers relativ gut kennen muss. Zum anderen wird die Performance des Internet Explorers bei zunehmend installierten Add-ons stark beeinträchtigt.


